
// 在我们不知道如何去定义变量的数据类型的时候，可以将鼠标移到变量上
// 变量上会给出推荐的写法
let obj = {
    a: 1,
    b: '字符串'
}

// 不专业
let obj1: object = {
    a: 1,
    b: '字符串'
}

// 正常情况下可以使用这种写法定义对象的数据类型
// 但是如果说该对象中有更多的数据时，这种写法可读性就会非常差
let obj2: {
    a: number;
    b: string;
} = {
    a: 1,
    b: '字符串'
}



/*
    interface 叫做接口，内部是用来声明对象中每个属性的类型
    多个属性之间可以使用 , 逗号 ;分号 或者干脆不写进行分开
    对于一些不确定是什么类型的数据，那么我们可以直接设置为 any （任意类型）
    如果有一个属性不确定有还是没有，那么我们可以将其定义为一个可选属性，在这个
    属性的后面加一个 ? 代表可选的属性
*/
interface iUser {
    age: number,
    name: string | number;
    sex: any
    count?: number
}


const user: iUser = {
    age: 10,
    name: '张三',
    sex: true,
    count: 2
}
// user.age


interface iObj {
    a: number;
    b: string;
}

let obj3: iObj = {
    a: 1,
    b: '字符串'
}


// 接口： 接口就是为对象内部属性定义数据类型用的
// 接口是为 对象 的数据类型而设计的一种注解方式


// 如何给一个数组添加属性类型呢？
let list = [1, 2, false, 3, 4, 5, 6, '你好世界', true]


